#include "stm32f10x.h"
#include "delay.h"	//延时驱动文件
#include "OLED.h"
#include "LED.h"
#include "Motor.h"
#include "Servo.h"
#include "Serial.h"
#include "Tracking.h"
#include "config.h" //引入全局常量配置信息
#include "AD.h" 

#include "MPU6050.h" // 陀螺仪
#include "timer.h"//定时器驱动库
#include "kalman.h"//卡尔曼解算法库
#include "stdio.h"//标准输入输出库
#include "string.h"//字符串库

// 定义openmv串口
#define OpenMv_USART USART3
// 定义蓝牙串口
#define BlueTooth_USART USART2

// 定义360°舵机正转值
#define ServoForward 20
#define ServoReversal 5 // 反转
#define ServoStop 15 // 停止

// 全局变量声明
int mainSpeed = 75; // 主速度
int spinSpeed = 66; // 原地转反向速度
int backSpeed = 30; // 后退速度
int diffSpeed = 44; // 差速转弯速度差
float Voltage; // 电池电压瞬时值
float VoltageAver; // 电池电压平均值
float AngleYAver; // 小车俯仰角平均值
uint8_t RxData;  // 接收到的openmv的数据
uint8_t irState[4];  // 循迹状态数组 0识别到黑线 1无黑线
int count = 0; // 十字计数
uint8_t goBridgeFlage = 0; // 上桥标志 1 已上桥
uint8_t goStepFlage = 0; // 上台阶标志 1 已上台阶
char tmp_buf[20];				//字符串数组

// 函数声明
void goBridge(void);
void goStep(void);
void readCross(void);
void checkColorCard(void);
void goTerminus(void);
void VoltageAverCal(float *Voltage,float *VoltageAver);
short int checkCarStatus(float uphillUperLimit,float flatUperLimit);
// void goPipeline(void);
